1. Field of the Invention
The present invention relates generally to the data processing field and, more particularly, to a computer implemented method, system and computer usable program code for configuring a computing system by identifying errors in a model of the computing system and for automatically resolving the identified errors
2. Description of the Related Art
Enterprises today rely on Web-based applications to deliver critical services to their customers and partners. These Web-based applications are typically assembled from a set of communicating components hosted over distributed and heterogeneous platforms. Resources, organized in data centers, may be shared across applications, and, potentially, across customers.
Currently, the deployment and configuration of Web-based applications is an ad-hoc, human-intensive process which poses significant costs and risks to service owners. Configuration dependencies cut across software stacks, network layers, and middleware container boundaries. These interdependencies, which may require an operator to switch between servers, tools, and knowledge domains, govern the complexity of the configuration task. A deployed application must satisfy operational and business requirements such as connectivity and performance, use available resources, and follow data center policies and best practices such as security policies. Often, the same application must be deployed in multiple environments, such as development, staging, testing and production, with differing sets of requirements. Web-based applications also go through constant changes, and this further complicates the problem of deployment and configuration.
While software engineers enjoy a mature set of methodologies and tools to develop and test applications, operations personnel lack comprehensive solutions to deploy and manage distributed applications and must depend on manual processes involving custom scripts, low level commands, and a large, non-uniform set of tools to manage application life cycles.
The use of object-relationship models for the design and configuration of computer, network and software systems has been adopted in industry and their use is being standardized for service deployment models. Typically, such models are validated syntactically against a meta-model. Often, the models are also validated semantically against a set of validation rules. The results of such syntactic and semantic validations are then presented to users in a human-readable form, and the users must be able to understand any underlying errors in the model and take appropriate corrective action.
In some cases, the validation mechanism also contains information regarding actions that are required to correct an error. Automated systems have been developed to search through models using such validation mechanisms to derive a topology which satisfies all relevant constraints. Other systems use declarative constraints and constraint satisfaction algorithms to find a configuration which satisfies all constraints.
A key challenge in all approaches to resolving validation errors in models of computing systems is the complexity of the search space due to the existence of a large number of possible resolutions for each problem, and the interactions between possible resolutions. Resolutions available to correct errors may be specific to the contents of the model and organizational policies. An author of a validation rule typically will not know all the possible types of resolutions that may be applied when the rule is violated.
There is, accordingly, a need for a mechanism for configuring a computing system that includes a capability of identifying errors in a model of the computing system, determining possible resolutions to correct these errors, and presenting the possible resolutions for user choice or automated application.